package interview.demo3;

/**
 * 递归: 汉诺塔
 * 条件：
 * 递归出口(终止递归的条件)
 * 递归表达式(规律)
 *
 * @author
 * @create 2018-10-13 8:48
 **/
public class RecursionTest3 {


    public static void main(String[] args) {

        String a = "A";
        String b = "B";
        String c = "C";


        hanoi(3, a, b, c);
    }

    /**
     * 把 n-1 号盘子移动到中转柱子
     * 把最大盘子从起点移到目标柱子
     * 把中转柱子的n-1号盘子也移到目标柱子
     *
     * @param n
     * @param start
     * @param transfore
     * @param target
     */
    public static void hanoi(int n, String start, String transfore, String target) {
        if (n == 1) {

            System.out.println(start + "---" + target);
        } else {
            //把 n-1 号盘子移动到中转柱子
            hanoi(n - 1, start, target, transfore);
            //把最大盘子从起点移到目标柱子
            System.out.println(start + "-----" + target);
            //把中转柱子的n-1号盘子也移到目标柱子
            hanoi(n - 1, transfore, start, target);
        }

    }

}
